﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using ASPPanificadora.fabrica;
using NHibernate;
using NHibernate.Linq;
using ASPPanificadora.classes;

namespace ASPPanificadora.servicos
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "AcessarSistemaS" in code, svc and config file together.
    public class AcessarSistemaS : IAcessarSistemaS
    {
        Fabrica fabrica = new Fabrica();

        public int AcessarSistema(string login, string senha)
        {
            if (!(login == null || login.Equals("") || senha == null || senha.Equals("")))
            {
                Usuario user = new Usuario();
                LigTipoUsuarioTelaSistema ligacaoTipoUsuario = new LigTipoUsuarioTelaSistema();

                using (var sessao = fabrica.sessao())
                {
                    user = sessao.Query<Usuario>().Where(a => a.Login == login && a.Senha == senha)
                        .Fetch(a => a.TipoUsuario)
                        .FirstOrDefault();
                    if (user != null && user.Id != 0)
                        ligacaoTipoUsuario = sessao.Query<LigTipoUsuarioTelaSistema>().Where(a => a.IdTipoUsuario == user.IdTipoUsuario && a.TelaSistema.LinkTelaSistema.Trim().ToLower() == "vendaview").FirstOrDefault();
                }

                if (user != null && user.Id != 0 && ligacaoTipoUsuario != null && ligacaoTipoUsuario.Id != 0)
                    return user.Id;
                else
                    return 0;
            }
            else
            {
                return 0;
            }
        }


        public string NomeUsuario(int idUsuario)
        {
            if (idUsuario != 0)
            {

                using (var sessao = fabrica.sessao())
                {
                    Usuario user = new Usuario();
                    user = sessao.Query<Usuario>().Where(a => a.Id == idUsuario)
                            .Fetch(a => a.Funcionario)
                            .FirstOrDefault();
                    if (user != null && user.Id != 0)
                        return user.Funcionario.NomeFuncionario;
                    else
                        return string.Empty;
                }
            }
            else
                return string.Empty;
        }
    }
}
